"""
复数的数学运算

问题：
    你写的最新的网络认证方案代码遇到了一个难题，并且你唯一的解决办法就是使用复数空间。
    再或者是你仅仅需要使用复数来执行一些计算操作。
解决方案：
    复数可以用使用函数 complex(real, imag) 或者是带有后缀j的浮点数来指定。
    对应的实部、虚部和共轭复数可以很容易的获取。
    所有常见的数学运算都可以工作。
    如果要执行其他的复数函数比如正弦、余弦或平方根，使用 cmath 模块。
"""

import cmath


def use_complex():
    x = complex(2, 4)
    y = 3 - 5j
    print(x)
    print(y)
    print(x.real, x.imag, x.conjugate())
    # 输出结果：
    """
    (2+4j)
    (3-5j)
    2.0 4.0 (2-4j)
    """

    print(x + y)
    print(x - y)
    print(x * y)
    print(x / y)
    print(abs(x))
    # 输出结果：
    """
    (5-1j)
    (-1+9j)
    (26+2j)
    (-0.4117647058823529+0.6470588235294118j)
    4.47213595499958
    """

    print(cmath.sin(x))
    print(cmath.cos(x))
    print(cmath.exp(x))
    # 输出结果：
    """
    (24.83130584894638-11.356612711218174j)
    (-11.36423470640106-24.814651485634187j)
    (-4.829809383269385-5.5920560936409816j)
    """


if __name__ == '__main__':
    use_complex()
